package com.aleyn.router.inject.qualifier

/**
 * @author: Aleyn
 * @date: 2023/7/27 11:22
 */

/**
 * 限定符接口。
 * 用于在依赖注入中区分相同类型的不同实例。当一个类型有多个提供方式时，
 * 可以使用限定符来指定需要注入哪一个具体实例。
 */
interface Qualifier {
    // 限定符的值，通常是一个唯一的字符串
    val value: String
}

/**
 * 基于字符串的限定符实现。
 *
 * @property value 限定符的字符串值。
 */
data class StringQualifier(override val value: String) : Qualifier {
    override fun toString() = value
}

/**
 * 创建一个 [StringQualifier] 的快捷函数。
 *
 * @param value 限定符的字符串值。
 * @return 一个新的 [StringQualifier] 实例。
 */
fun sq(value: String) = StringQualifier(value)